package com.aggregate.pay.pingan.bean;

import java.util.Arrays;

import com.aggregate.pay.pingan.enums.AccountType;
import com.aggregate.pay.pingan.enums.Country;
import com.aggregate.pay.pingan.enums.Sex;
import com.aggregate.pay.pingan.jackson.converter.AccountTypeSerialize;
import com.aggregate.pay.pingan.jackson.converter.CountrySerialize;
import com.aggregate.pay.pingan.jackson.converter.SexSerialize;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * 添加商户接口data参数对象，需要转换成JSON并加密赋给<code>CommonData</code>对象的<code>data</code>属性
 * @author Moyq5
 * @date 2017年6月23日
 */
public class MerchAddData {

	/**
	 * 机构商户主键（系统有唯一性校验），建议使用商户表的主键ID，防止重复添加商户，必填，64。
	 */
	@JsonProperty("tra_id")
	private String merchId;
	
	/**
	 * 商户名称，必填，50
	 */
	@JsonProperty("mct_name")
	private String merchName;
	
	/**
	 * 招牌名称，必填，50
	 */
	@JsonProperty("brand_name")
	private String brandName;
	
	/**
	 * 城市编号，必填，6
	 */
	@JsonProperty("cityid")
	private String cityId;
	
	/**
	 * 详细地址，不含省市区县名称，必填，150
	 */
	private String address;
	
	/**
	 * 联系电话，必填，50
	 */
	private String tel;
	
	/**
	 * 营业时间，多个以小写逗号分开(9:00-12:00,13:00-18:00)，必填，100
	 */
	@JsonProperty("open_hours")
	private String openHours;
	
	/**
	 * 行业分类编号列表（第一个分类编号为主分类，后面的为二级分类），必填
	 */
	@JsonProperty("clsid")
	private Integer[] catIds;
	
	/**
	 * 法人姓名，必填，15
	 */
	@JsonProperty("boss_name")
	private String bossName;
	
	/**
	 * 法人性别（1男，2女），必填，1
	 */
	@JsonProperty("boss_sex")
	@JsonSerialize(converter = SexSerialize.class)
	private Sex bossSex;
	
	/**
	 * 法人证件国别/地区（中国CHN，香港HKG，澳门MAC，台湾CTN），必填，3
	 */
	@JsonProperty("boss_id_country")
	@JsonSerialize(converter = CountrySerialize.class)
	private Country bossIdCountry;
	
	/**
	 * 法人证件类型，必填，1，
	 * 1居民身份证,
	 * 2临时居民身份证,
	 * 3居民户口簿,
	 * 4护照,
	 * 5港澳居民来往内地通行证,
	 * 6回乡证,
	 * 7军人证,
	 * 8武警身份证,
	 * 9其他法定文件
	 */
	@JsonProperty("boss_id_type")
	private Integer bossIdType;
	
	/**
	 * 法人证件生效时间（yyyy-mm-dd），必填，10
	 */
	@JsonProperty("boss_sdate")
	private String bossIdStartDate;
	
	/**
	 * 法人证件过期时间（yyyy-mm-dd），必填，10
	 */
	@JsonProperty("boss_edate")
	private String bossIdEndDate;
	
	/**
	 * 法人证件号码，必填，18
	 */
	@JsonProperty("boss_id_no")
	private String bossIdNo;
	
	/**
	 * 法人电话，30
	 */
	@JsonProperty("boss_tel")
	private String bossTel;
	
	/**
	 * 法人邮箱，100
	 */
	@JsonProperty("boss_email")
	private String bossEmail;
	
	/**
	 * 法人职业，50
	 */
	@JsonProperty("boss_job")
	private String bossJob;
	
	/**
	 * 法人住址，50
	 */
	@JsonProperty("boss_address")
	private String bossAddress;
	
	/**
	 * 法人身份证正面【私密区】（系统返回的图片路径），必填，100
	 */
	@JsonProperty("boss_positive")
	private String bossPositive;
	
	/**
	 * 法人身份证背面【私密区】（系统返回的图片路径），必填，100
	 */
	@JsonProperty("boss_back")
	private String bossBack;
	
	/**
	 * 营业执照类型（1三证合一，2非三证合一），必填，1
	 */
	@JsonProperty("bl_type")
	private Integer licenseType;
	
	/**
	 * 营业执照生效时间（yyyy-mm-dd），必填
	 */
	@JsonProperty("bl_sdate")
	private String licenseStartDate;
	
	/**
	 * 营业执照过期时间（yyyy-mm-dd），必填
	 */
	@JsonProperty("bl_edate")
	private String licenseEndDate;
	
	/**
	 * 营业执照编号（系统有唯一性校验），必填，30
	 */
	@JsonProperty("bl_no")
	private String licenseNo;
	
	/**
	 * 营业执照图片【私密区】（系统返回的图片路径），必填，100
	 */
	@JsonProperty("bl_pic")
	private String licensePic;
	
	/**
	 * 开户行名称，必填，25
	 */
	@JsonProperty("bank_name")
	private String bankName;
	
	/**
	 * 银行户名，必填，25
	 */
	@JsonProperty("account_name")
	private String accountName;
	
	/**
	 * 银行账号，必填，30
	 */
	@JsonProperty("account_no")
	private String accountNo;
	
	/**
	 * 结算账户类型（2对私，1对公），必填，1
	 */
	@JsonProperty("account_type")
	@JsonSerialize(converter = AccountTypeSerialize.class)
	private AccountType accountType;
	
	/**
	 * 清算联行号，开户行行号，必填，30
	 */
	@JsonProperty("bank_no")
	private String bankNo;
	
	/**
	 * 结算账户人身份（1法人，2法人亲属），结算帐户为对私时必填，1
	 */
	@JsonProperty("account_boss")
	private Integer accountBoss;
	
	/**
	 * 法人亲属证件类型（
	 * 1居民身份证,
	 * 2临时居民身份证,
	 * 3居民户口簿,
	 * 4护照,
	 * 5港澳居民来往内地通行证,
	 * 6回乡证,
	 * 7军人证,
	 * 8武警身份证,
	 * 9其他法定文件)<br>
	 * 结算账户人身份为法人亲属时必填，1
	 */
	@JsonProperty("account_id_type")
	private Integer accountIdType;
	
	/**
	 * 法人亲属证件号码，30
	 */
	@JsonProperty("account_id_no")
	private String accountIdNo;
	
	/**
	 * 商户简介，4000
	 */
	@JsonProperty("intro")
	private String intro;
	
	/**
	 * 客户经理姓名，必须为系统后台的管理员真实姓名，25
	 */
	@JsonProperty("adm_name")
	private String adminName;
	
	/**
	 * 组织机构代码证号，30
	 */
	@JsonProperty("occ_no")
	private String occNo;
	
	/**
	 * 组织机构代码证生效时间（yyyy-mm-dd），10
	 */
	@JsonProperty("occ_sdate")
	private String occStartDate;
	
	/**
	 * 组织机构代码证过期时间（yyyy-mm-dd），10
	 */
	@JsonProperty("occ_edate")
	private String occEndDate;
	
	/**
	 * 组织机构代码证图片【私密区】，100
	 */
	@JsonProperty("occ_pic")
	private String occPic;
	
	/**
	 * 税务登记证号，30
	 */
	@JsonProperty("trc_no")
	private String trcNo;
	
	/**
	 * 税务登记证生效时间（yyyy-mm-dd），10
	 */
	@JsonProperty("trc_sdate")
	private String trcStartDate;
	
	/**
	 * 税务登记证过期时间（yyyy-mm-dd），10
	 */
	@JsonProperty("trc_edate")
	private String trcEndDate;
	
	/**
	 * 税务登记证图片【私密区】，100
	 */
	@JsonProperty("trc_pic")
	private String trcPic;
	
	/**
	 * 商户标记，自定义参数，100
	 */
	private String tag;
	
	/**
	 * 财务联系人，25
	 */
	@JsonProperty("financial_contact")
	private String financialContact;
	
	/**
	 * 财务联系人电话，25
	 */
	@JsonProperty("financial_tel")
	private String financialTel;
	
	/**
	 * 商户logo【公共区】，100
	 */
	private String logo;
	
	/**
	 * 许可证图片【私密区】，100
	 */
	@JsonProperty("licence_pic")
	private String licencePic;
	
	/**
	 * 授权文件【私密区】，100
	 */
	@JsonProperty("licence_pic2")
	private String licencePic2;
	
	/**
	 * 其他资料1，100
	 */
	@JsonProperty("other_pic1")
	private String otherPic1;
	
	/**
	 * 其他资料2，100
	 */
	@JsonProperty("other_pic2")
	private String otherPic2;
	
	/**
	 * 其他资料3，100
	 */
	@JsonProperty("other_pic3")
	private String otherPic3;
	
	/**
	 * 其他资料4，100
	 */
	@JsonProperty("other_pic4")
	private String otherPic4;

	public String getMerchId() {
		return merchId;
	}

	public void setMerchId(String merchId) {
		this.merchId = merchId;
	}

	public String getMerchName() {
		return merchName;
	}

	public void setMerchName(String merchName) {
		this.merchName = merchName;
	}

	public String getBrandName() {
		return brandName;
	}

	public void setBrandName(String brandName) {
		this.brandName = brandName;
	}

	public String getCityId() {
		return cityId;
	}

	public void setCityId(String cityId) {
		this.cityId = cityId;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getOpenHours() {
		return openHours;
	}

	public void setOpenHours(String openHours) {
		this.openHours = openHours;
	}

	public Integer[] getCatIds() {
		return catIds;
	}

	public void setCatIds(Integer[] catIds) {
		this.catIds = catIds;
	}

	public String getBossName() {
		return bossName;
	}

	public void setBossName(String bossName) {
		this.bossName = bossName;
	}

	public Sex getBossSex() {
		return bossSex;
	}

	public void setBossSex(Sex bossSex) {
		this.bossSex = bossSex;
	}

	public Country getBossIdCountry() {
		return bossIdCountry;
	}

	public void setBossIdCountry(Country bossIdCountry) {
		this.bossIdCountry = bossIdCountry;
	}

	public Integer getBossIdType() {
		return bossIdType;
	}

	public void setBossIdType(Integer bossIdType) {
		this.bossIdType = bossIdType;
	}

	public String getBossIdStartDate() {
		return bossIdStartDate;
	}

	public void setBossIdStartDate(String bossIdStartDate) {
		this.bossIdStartDate = bossIdStartDate;
	}

	public String getBossIdEndDate() {
		return bossIdEndDate;
	}

	public void setBossIdEndDate(String bossIdEndDate) {
		this.bossIdEndDate = bossIdEndDate;
	}

	public String getBossIdNo() {
		return bossIdNo;
	}

	public void setBossIdNo(String bossIdNo) {
		this.bossIdNo = bossIdNo;
	}

	public String getBossTel() {
		return bossTel;
	}

	public void setBossTel(String bossTel) {
		this.bossTel = bossTel;
	}

	public String getBossEmail() {
		return bossEmail;
	}

	public void setBossEmail(String bossEmail) {
		this.bossEmail = bossEmail;
	}

	public String getBossJob() {
		return bossJob;
	}

	public void setBossJob(String bossJob) {
		this.bossJob = bossJob;
	}

	public String getBossAddress() {
		return bossAddress;
	}

	public void setBossAddress(String bossAddress) {
		this.bossAddress = bossAddress;
	}

	public String getBossPositive() {
		return bossPositive;
	}

	public void setBossPositive(String bossPositive) {
		this.bossPositive = bossPositive;
	}

	public String getBossBack() {
		return bossBack;
	}

	public void setBossBack(String bossBack) {
		this.bossBack = bossBack;
	}

	public Integer getLicenseType() {
		return licenseType;
	}

	public void setLicenseType(Integer licenseType) {
		this.licenseType = licenseType;
	}

	public String getLicenseStartDate() {
		return licenseStartDate;
	}

	public void setLicenseStartDate(String licenseStartDate) {
		this.licenseStartDate = licenseStartDate;
	}

	public String getLicenseEndDate() {
		return licenseEndDate;
	}

	public void setLicenseEndDate(String licenseEndDate) {
		this.licenseEndDate = licenseEndDate;
	}

	public String getLicenseNo() {
		return licenseNo;
	}

	public void setLicenseNo(String licenseNo) {
		this.licenseNo = licenseNo;
	}

	public String getLicensePic() {
		return licensePic;
	}

	public void setLicensePic(String licensePic) {
		this.licensePic = licensePic;
	}

	public String getBankName() {
		return bankName;
	}

	public void setBankName(String bankName) {
		this.bankName = bankName;
	}

	public String getAccountName() {
		return accountName;
	}

	public void setAccountName(String accountName) {
		this.accountName = accountName;
	}

	public String getAccountNo() {
		return accountNo;
	}

	public void setAccountNo(String accountNo) {
		this.accountNo = accountNo;
	}

	public AccountType getAccountType() {
		return accountType;
	}

	public void setAccountType(AccountType accountType) {
		this.accountType = accountType;
	}

	public String getBankNo() {
		return bankNo;
	}

	public void setBankNo(String bankNo) {
		this.bankNo = bankNo;
	}

	public Integer getAccountBoss() {
		return accountBoss;
	}

	public void setAccountBoss(Integer accountBoss) {
		this.accountBoss = accountBoss;
	}

	public Integer getAccountIdType() {
		return accountIdType;
	}

	public void setAccountIdType(Integer accountIdType) {
		this.accountIdType = accountIdType;
	}

	public String getAccountIdNo() {
		return accountIdNo;
	}

	public void setAccountIdNo(String accountIdNo) {
		this.accountIdNo = accountIdNo;
	}

	public String getIntro() {
		return intro;
	}

	public void setIntro(String intro) {
		this.intro = intro;
	}

	public String getAdminName() {
		return adminName;
	}

	public void setAdminName(String adminName) {
		this.adminName = adminName;
	}

	public String getOccNo() {
		return occNo;
	}

	public void setOccNo(String occNo) {
		this.occNo = occNo;
	}

	public String getOccStartDate() {
		return occStartDate;
	}

	public void setOccStartDate(String occStartDate) {
		this.occStartDate = occStartDate;
	}

	public String getOccEndDate() {
		return occEndDate;
	}

	public void setOccEndDate(String occEndDate) {
		this.occEndDate = occEndDate;
	}

	public String getOccPic() {
		return occPic;
	}

	public void setOccPic(String occPic) {
		this.occPic = occPic;
	}

	public String getTrcNo() {
		return trcNo;
	}

	public void setTrcNo(String trcNo) {
		this.trcNo = trcNo;
	}

	public String getTrcStartDate() {
		return trcStartDate;
	}

	public void setTrcStartDate(String trcStartDate) {
		this.trcStartDate = trcStartDate;
	}

	public String getTrcEndDate() {
		return trcEndDate;
	}

	public void setTrcEndDate(String trcEndDate) {
		this.trcEndDate = trcEndDate;
	}

	public String getTrcPic() {
		return trcPic;
	}

	public void setTrcPic(String trcPic) {
		this.trcPic = trcPic;
	}

	public String getTag() {
		return tag;
	}

	public void setTag(String tag) {
		this.tag = tag;
	}

	public String getFinancialContact() {
		return financialContact;
	}

	public void setFinancialContact(String financialContact) {
		this.financialContact = financialContact;
	}

	public String getFinancialTel() {
		return financialTel;
	}

	public void setFinancialTel(String financialTel) {
		this.financialTel = financialTel;
	}

	public String getLogo() {
		return logo;
	}

	public void setLogo(String logo) {
		this.logo = logo;
	}

	public String getLicencePic() {
		return licencePic;
	}

	public void setLicencePic(String licencePic) {
		this.licencePic = licencePic;
	}

	public String getLicencePic2() {
		return licencePic2;
	}

	public void setLicencePic2(String licencePic2) {
		this.licencePic2 = licencePic2;
	}

	public String getOtherPic1() {
		return otherPic1;
	}

	public void setOtherPic1(String otherPic1) {
		this.otherPic1 = otherPic1;
	}

	public String getOtherPic2() {
		return otherPic2;
	}

	public void setOtherPic2(String otherPic2) {
		this.otherPic2 = otherPic2;
	}

	public String getOtherPic3() {
		return otherPic3;
	}

	public void setOtherPic3(String otherPic3) {
		this.otherPic3 = otherPic3;
	}

	public String getOtherPic4() {
		return otherPic4;
	}

	public void setOtherPic4(String otherPic4) {
		this.otherPic4 = otherPic4;
	}

	@Override
	public String toString() {
		return "MerchAddData [merchId=" + merchId + ", merchName=" + merchName + ", brandName=" + brandName
				+ ", cityId=" + cityId + ", address=" + address + ", tel=" + tel + ", openHours=" + openHours
				+ ", catIds=" + Arrays.toString(catIds) + ", bossName=" + bossName + ", bossSex=" + bossSex
				+ ", bossIdCountry=" + bossIdCountry + ", bossIdType=" + bossIdType + ", bossIdStartDate="
				+ bossIdStartDate + ", bossIdEndDate=" + bossIdEndDate + ", bossIdNo=" + bossIdNo + ", bossTel="
				+ bossTel + ", bossEmail=" + bossEmail + ", bossJob=" + bossJob + ", bossAddress=" + bossAddress
				+ ", bossPositive=" + bossPositive + ", bossBack=" + bossBack + ", licenseType=" + licenseType
				+ ", licenseStartDate=" + licenseStartDate + ", licenseEndDate=" + licenseEndDate + ", licenseNo="
				+ licenseNo + ", licensePic=" + licensePic + ", bankName=" + bankName + ", accountName=" + accountName
				+ ", accountNo=" + accountNo + ", accountType=" + accountType + ", bankNo=" + bankNo + ", accountBoss="
				+ accountBoss + ", accountIdType=" + accountIdType + ", accountIdNo=" + accountIdNo + ", intro=" + intro
				+ ", adminName=" + adminName + ", occNo=" + occNo + ", occStartDate=" + occStartDate + ", occEndDate="
				+ occEndDate + ", occPic=" + occPic + ", trcNo=" + trcNo + ", trcStartDate=" + trcStartDate
				+ ", trcEndDate=" + trcEndDate + ", trcPic=" + trcPic + ", tag=" + tag + ", financialContact="
				+ financialContact + ", financialTel=" + financialTel + ", logo=" + logo + ", licencePic=" + licencePic
				+ ", licencePic2=" + licencePic2 + ", otherPic1=" + otherPic1 + ", otherPic2=" + otherPic2
				+ ", otherPic3=" + otherPic3 + ", otherPic4=" + otherPic4 + "]";
	}

	
}
